package br.com.news.web.service;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.core.MediaType;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

import br.com.news.utils.database.beans.CategoriaBean;
import br.com.news.utils.database.beans.UsuarioBean;
import br.com.news.utils.service.exception.ServiceException;
import br.com.news.web.utils.Constantes;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;

@Service("usuarioService")
public class UsuarioService implements Serializable {

	private static final long serialVersionUID = -584174662328971452L;

	public List<UsuarioBean> findByExample(UsuarioBean usuario) {

		Gson g = new Gson();
		String json = g.toJson(usuario);

		Client c = Client.create();
		String respostaJson = c.resource(Constantes.URL + "Usuario/findByExample").accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON)
				.post(String.class, json);
		Gson gson = new Gson();
		List<UsuarioBean> usuarios = gson.fromJson(respostaJson, new TypeToken<ArrayList<UsuarioBean>>() {}.getType());

		return usuarios;
	}

	public UsuarioBean autenticar(UsuarioBean usuarioBean) throws ServiceException {
		try {
			Client c = Client.create();
			WebResource wr = c.resource(String.format("%s%s/%s", Constantes.URL_AUTENTICAR, usuarioBean.getLogin(), usuarioBean.getSenha()));
			String json = wr.get(String.class);
			Gson gson = new Gson();
			usuarioBean = gson.fromJson(json, UsuarioBean.class);
			return usuarioBean;
		} catch (Exception e) {
			Logger.getLogger(UsuarioService.class).error(e.getMessage(), e);
			throw new ServiceException(e);
		}

	}

	public void update(UsuarioBean usuarioBean) {
		Gson g = new Gson();
		String json = g.toJson(usuarioBean);

		Client c = Client.create();
		c.resource("http://localhost:8080/news-web-service-rest/Usuario/update").type(MediaType.APPLICATION_JSON).put(json);
	}
	
	public void save(UsuarioBean example) {
		 
		  Gson g = new Gson();
		  String json = g.toJson(example);

		    Client c = Client.create();
		    c.resource("http://localhost:8080/news-web-service-rest/Usuario/insert").type(MediaType.APPLICATION_JSON + ";charset=utf-8").post(json);
	 
	}

}
